﻿namespace HuwmanCode.Diagnostics.Logging

open System

/// <summary>
/// The interface for a logger
/// </summary>
type ILogger =
    /// <summary>
    /// The debug trace.
    /// </summary>
    abstract Debug : ITrace

    /// <summary>
    /// The info trace.
    /// </summary>
    abstract Info : ITrace

    /// <summary>
    /// The warn trace.
    /// </summary>
    abstract Warn : ITrace

    /// <summary>
    /// The error trace.
    /// </summary>
    abstract Error : ITrace

    /// <summary>
    /// The fatal trace.
    /// </summary>
    abstract Fatal : ITrace

    /// <summary>
    /// Write the trace message to the trace specified in the message.
    /// </summary>
    /// <param name="message">The trace message.</param>
    abstract Write: message:TraceMessage -> unit